Define functional model.
Functional Model: Definition and Purposeβ
A functional model is a representation of a software system that describes the transformations of data as it flows through the system. It focuses on what the system does rather than how it does it, emphasizing the functions that convert inputs into outputs regardless of the implementation details. The functional model captures the processing aspects of a system, highlighting data transformations and the functional dependencies between processes.
In software engineering, the functional model is one of the core models used during system analysis and design, alongside object models (which focus on system structure) and dynamic models (which focus on system behavior over time).
Key Components of a Functional Modelβ
1. Functions/Processesβ
Functions are the transformational elements that:
- Accept input data
- Process or transform the data
- Produce output data
Each function represents a specific operation or computation that the system performs.
2. Data Flowsβ
Data flows represent the movement of data through the system:
- Connections between functions
- Inputs from external entities
- Outputs to external entities
- Data movement between processes and data stores
3. External Entitiesβ
External entities (also called terminators) are the sources or destinations of data that exist outside the system boundary:
- Users
- Other systems
- External organizations
- Hardware devices
4. Data Storesβ
Data stores represent repositories where data is held for later use:
- Databases
- Files
- Temporary storage
- Queues and buffers
Representation Techniques for Functional Modelsβ
1. Data Flow Diagrams (DFDs)β
The most common technique for representing functional models is through Data Flow Diagrams. DFDs use a set of standardized symbols:
- Processes (circles or rounded rectangles): Represent functions that transform data
- Data Flows (arrows): Show the movement of data
- External Entities (rectangles): Depict sources or destinations of data outside the system
- Data Stores (open-ended rectangles): Represent repositories of data
DFDs typically use a leveled approach:
- Context Diagram (Level 0): Shows the system as a single process with its external entities
- Level 1 DFD: Breaks down the main process into major functional processes
- Level 2+ DFDs: Further decompose complex processes into simpler ones
Example: Context Diagram (Level 0) for an Order Processing Systemβ
βββββββββββββββ βββββββββββββββββββββββ βββββββββββββ
β β Order β β Payment β β
β Customer ββββββββββββΊβ Order Processing βββββββββββββ€ Bank β
β β β System β β β
β βββββββββββββ€ ββββββββββββΊβ β
βββββββββββββββ Confirmationβ βTransactionβββββββββββββ
β β Data
βββββββββββ¬ββββββββββββ
β
β Shipping
β Request
βΌ
βββββββββββββββββββββ
β β
β Shipping β
β Department β
β β
βββββββββββββββββββββ
Example: Level 1 DFD for the Order Processing Systemβ
βββββββββββββββ βββββββββββββ βββββββββββββ
β β Order β β Verified β β
β Customer βββββββββββΊβ Validate βββββββββββΊβ Process β
β β β Order β β Payment βββββββ
βββββββββββββββ βββββββββββββ βββββββ¬ββββββ β
β β
β β Payment
β β Authorization
βββββββββββββββ β β
β β β β
β Customer βββββββββββββββββββββββ β β
β β Confirmation β β β
βββββββββββββββ β β β
β β β
β β β
β βΌ β
βββββββββββββββββββββ βββββββ΄βββββ βββββββββββββ
β β Shipping β β β β
β Shipping βββββββββββββββββ€ Fulfill β β Bank β
β Department β Request β Order β β β
β β β β β β
βββββββββββββββββββββ ββββββββββββ βββββββββββββ
β²
β
β
ββββββ΄βββββ
β β
β Product β
β Databaseβ
β β
βββββββββββ
2. Function Hierarchiesβ
Function hierarchies organize system functions in a top-down structure:
- Top-level functions represent major system capabilities
- Lower levels show increasingly detailed sub-functions
- Typically represented as a hierarchical tree or structure chart
βββββββββββββββββββββ
β Order Processing β
β System β
βββββββββββ¬ββββββββββ
βββββββββββββββββββββΌβββββββββββββββββββββ
β β β
βββββββββββββΌββββββββ ββββββββββΌββββββββββ ββββββββΌβββββββ
β β β β β β
β Customer β β Order β β Inventory β
β Management β β Management β β Management β
β β β β β β
βββββββββββ¬ββββββββββ ββββββββ¬ββββββββ¬ββββ βββββββββββββββ
β β β
ββββββββββ΄βββββββββ ββββββΌββββ β
β β β β β
β Register β β Create β β
β Customer β β Order β β
β β β β β
βββββββββββββββββββ ββββββββββ β
β
βββββββββΌβββββββ
β β
β Process β
β Payment β
β β
ββββββββββββββββ
3. IDEF0 (Integration Definition for Function Modeling)β
IDEF0 is a more formal modeling technique that shows:
- Functions: As boxes
- Inputs: Arrows entering the left side of a function
- Outputs: Arrows exiting the right side
- Controls: Arrows entering the top (constraints)
- Mechanisms: Arrows entering the bottom (resources)
Controls
β
βΌ
Inputs βββββββΊβββββββββββββββββββββββΊ Outputs
β β
β Function β
β β
βββββββ¬ββββββ
β
βΌ
Mechanisms
4. Activity Diagramsβ
UML Activity Diagrams can also be used to model functional aspects of a system:
- Show the flow of activities
- Include decision points and parallel paths
- Can represent complex processing logic
Levels of Functional Modelsβ
A comprehensive functional model is typically developed at multiple levels of abstraction:
1. High-Level Functional Modelβ
- Identifies major system functions
- Shows primary data flows between functions
- Establishes system boundaries
- Identifies external entities
2. Detailed Functional Modelβ
- Decomposes high-level functions into subfunctions
- Specifies detailed data flows
- Identifies all data stores
- Describes transformations in more detail
3. Process Specificationsβ
- Provides algorithms or rules for each atomic function
- Describes the logic using pseudocode, structured English, decision tables, or state transition diagrams
Benefits of Functional Modelingβ
- Focused on System Behavior: Emphasizes what the system does, making it easier to validate with users
- Abstraction from Implementation: Separates functionality from implementation details
- Hierarchical Decomposition: Supports the systematic breakdown of complex systems
- Communication Tool: Provides a visual representation understandable by non-technical stakeholders
- Requirements Validation: Helps verify that all required functionality is included
- Identification of Data Elements: Helps identify data that needs to be stored or transmitted
Limitations of Functional Modelingβ
- Limited Representation of Time: Does not explicitly show timing or sequencing
- Weak on Data Structure: Focuses on data flow rather than data organization
- No Object Representation: Does not reflect object-oriented concepts
- Static View: Provides a static rather than dynamic view of the system
- May Lead to Functional Decomposition: Can encourage a function-centric design approach
Relationship with Other Modelsβ
The functional model is typically used in conjunction with other models to provide a complete view of the system:
- Object Model: Describes the system's structure in terms of objects, attributes, and relationships
- Dynamic Model: Shows the system's behavior over time through state changes and event sequences
- Data Model: Represents the data structures and relationships independent of processing
Together, these models provide complementary perspectives that address different aspects of the system under development.
Application in Software Development Processβ
The functional model is particularly useful during:
- Requirements Analysis: Understanding what the system needs to do
- System Design: Decomposing the system into manageable components
- Validation: Verifying that all required functions are addressed
- Documentation: Providing system documentation for future reference
- Maintenance: Understanding the impact of changes on system functions
In modern software development practices, functional modeling continues to be a valuable technique, particularly in systems where data processing is complex or critical to the application domain.